

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>Set Collection Classes [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, Set,Set Collection Classes,Collection Classes,Collection Classes Set,Class,Class Collection, Set,Association,Association Connector, Set Collection Class">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">Set Collection Classes</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="languagemacros.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="languageoptions.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <p class="p_BodyText"><span class="f_BodyText">Enterprise Architect enables you to define </span><span class="f_BodyText" style="font-style: italic;">Collection Classes</span><span class="f_BodyText"> for generating code from Association connectors where the target role has a multiplicity setting greater than 1. There are two options for doing this:</span></p>
<ol style="text-indent: 0px; margin-left: 48px; list-style-position: outside;">
<li value=1><span class="f_NumberedList">On the</span><span class="f_UIControl"> Source Code Engineering</span><span class="f_NumberedList"> section of the </span><span class="f_UIControl">Options</span><span class="f_NumberedList"> dialog (select the </span><span class="f_MenuKeyField">Tools | Options | Source Code Engineering </span><span class="f_NumberedList">option), on each language page click on the </span><span class="f_MenuKeyField">Collection Classes</span><span class="f_NumberedList"> button.</span><br>
<span class="f_NumberedList">&nbsp;</span><br>
<img src="codelangcollclass.png" width="426" height="37" border="0" alt="CodeLangCollClass"><br>
<span class="f_NumberedList">&nbsp;</span><br>
<span class="f_NumberedList">The </span><span class="f_UIControl">Collection Classes for Association Roles</span><span class="f_NumberedList"> dialog displays.</span><br>
<span class="f_NumberedList">&nbsp;</span><br>
<span class="f_NumberedList"> </span><img src="assocrolecontainers.png" width="417" height="186" border="0" alt="AssocRoleContainers"><br>
<span class="f_NumberedList">&nbsp;</span><br>
<span class="f_NumberedList">On this dialog, you can define:</span></li>
</ol>
<ul style="text-indent: 0px; margin-left: 65px; list-style-position: outside;">
<li><span class="f_Bulletlist3">The default Collection Class for 1..* roles</span></li>
<li><span class="f_Bulletlist3">The ordered Collection Class to use for 1..* roles</span></li>
<li><span class="f_Bulletlist3">The qualified Collection Class to use for 1..* roles.</span></li>
</ul>
<ol style="text-indent: 0px; margin-left: 48px; list-style-position: outside;">
<li value=2><span class="f_NumberedList">On the </span><span class="f_UIControl">Detail</span><span class="f_NumberedList"> tab of the Class</span><span class="f_UIControl"> Properties</span><span class="f_NumberedList"> dialog (accessible from the right-click context menu of any Class), click on the </span><span class="f_MenuKeyField">Collection Classes</span><span class="f_NumberedList"> button.</span><br>
<span class="f_NumberedList">&nbsp;</span><br>
<img src="assocroleclassdetail.png" width="140" height="144" border="0" alt="AssocRoleClassDetail"><br>
<span class="f_NumberedList">&nbsp;</span><br>
<span class="f_NumberedList">The </span><span class="f_UIControl">Collection Classes for Association Roles</span><span class="f_NumberedList"> dialog again displays, but here you define </span><span class="f_Bulletlist3" style="font-style: italic; font-weight: bold;">for when only this Class is used</span><span class="f_NumberedList">:</span></li>
</ol>
<ul style="text-indent: 0px; margin-left: 65px; list-style-position: outside;">
<li><span class="f_Bulletlist3">The default Collection Class for 1..* roles</span></li>
<li><span class="f_Bulletlist3">The ordered Collection Class to use for 1..* roles</span></li>
<li><span class="f_Bulletlist3">The qualified Collection Class to use for 1..* roles.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">When Enterprise Architect generates code for a connector that has a multiplicity role &gt;1, the Collection Class is calculated as follows:</span></p>
<ol style="text-indent: 0px; margin-left: 48px; list-style-position: outside;">
<li value=1><span class="f_NumberedList">If the </span><span class="f_MenuKeyField">Qualifier</span><span class="f_NumberedList"> is set use the qualified collection:</span></li>
</ol>
<ul style="text-indent: 0px; margin-left: 65px; list-style-position: outside;">
<li><span class="f_Bulletlist3">for the Class if set</span></li>
<li><span class="f_Bulletlist3">else use the code language qualified collection.</span></li>
</ul>
<ol style="text-indent: 0px; margin-left: 48px; list-style-position: outside;">
<li value=2><span class="f_NumberedList">If the </span><span class="f_MenuKeyField">Order</span><span class="f_NumberedList"> option is set use the ordered collection:</span></li>
</ol>
<ul style="text-indent: 0px; margin-left: 65px; list-style-position: outside;">
<li><span class="f_Bulletlist3">for the Class if set</span></li>
<li><span class="f_Bulletlist3">else use the code language ordered collection.</span></li>
</ul>
<ol style="text-indent: 0px; margin-left: 48px; list-style-position: outside;">
<li value=3><span class="f_NumberedList">Else use the default collection:</span></li>
</ol>
<ul style="text-indent: 0px; margin-left: 65px; list-style-position: outside;">
<li><span class="f_Bulletlist3">for the Class if set</span></li>
<li><span class="f_Bulletlist3">else use the code language default collection.</span></li>
</ul>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 5px 0px 5px 13px;"><table cellspacing="0" cellpadding="2" border="0" style="border: none; border-spacing:0px;">
<tr style="text-align:left;vertical-align:bottom;">
<td valign="bottom" width="952" bgcolor="#efeff7" style="width:952px; background-color:#efeff7;"><p class="p_TiporNote" style="border-top: none; border-right: none; border-left: none;"><span class="f_TiporNote">Note:</span></p>
</td>
</tr>
<tr style="text-align:left;">
<td width="952" bgcolor="#f7f7ff" style="width:952px; background-color:#f7f7ff;"><p class="p_TiporNoteText"><span class="f_TiporNoteText">You can include the marker </span><span class="f_TiporNoteText">#TYPE#</span><span class="f_TiporNoteText"> in the collection name; Enterprise Architect replaces this with the name of the Class being collected at source generation time (e.g. Vector&lt;#TYPE#&gt; would become Vector&lt;foo&gt;).</span></p>
</td>
</tr>
</table>
</div>
<p class="p_BodyText"><span class="f_BodyText">Additionally, on both the </span><span class="f_UIControl">Source Role</span><span class="f_BodyText"> and </span><span class="f_UIControl">Target Role</span><span class="f_BodyText"> tabs of the </span><span class="f_UIControl">Association Property</span><span class="f_BodyText"> dialog (accessible from the right-click context menu of any Association) there is a </span><span class="f_MenuKeyField">Member Type</span><span class="f_BodyText"> field. If you set this, the value you enter overrides all the above options. The example below shows a defined </span><span class="f_BodyText" style="font-style: italic;">PersonList;</span><span class="f_BodyText"> when code is generated, because this has a </span><span class="f_MenuKeyField">Multiplicity</span><span class="f_BodyText"> greater than 1 and the </span><span class="f_MenuKeyField">Member Type</span><span class="f_BodyText"> is defined, the variable created is of type </span><span class="f_BodyText" style="font-style: italic;">PersonList</span><span class="f_BodyText">.</span></p>
<p class="p_TextIndentedL2"><img src="assocpropdlg.png" width="389" height="447" border="0" alt="AssocPropDlg"></p>




            </div>
          </div>
        </div>



</div>


</body>
</html>
